/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package semac.control;

import java.io.IOException;
import java.util.ArrayList;
import java.sql.*;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletRequest;
import javax.swing.JOptionPane;
import javax.xml.parsers.ParserConfigurationException;
import org.xml.sax.SAXException;
import semac.entidades.Permiso;
import semac.entidades.Rol;

/**
 *
 * @author Luigi
 */
public class CtrlRoles {
    private ArrayList<Rol> listaRoles;
    private CtrlAccesos manejadorAccesos;
    private Conexion connection;
    private ResultSet resultado;
    private String query;
    private HttpServletRequest request;

    public CtrlRoles() throws IOException, ParserConfigurationException, SAXException{
        request = (HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest();
        String urlFile =  request.getRealPath("/")+ "/WEB-INF/dataBase.xml";
        connection =  new Conexion(urlFile);
        manejadorAccesos = new CtrlAccesos();
    }

    //Metodo que solicita los permisos de un rol determinado
    public ArrayList<Permiso> solicitarPermisos(int codigoRol) throws ClassNotFoundException,
            SQLException{
        ArrayList <Permiso> listaPermisos;
        listaPermisos = manejadorAccesos.getPermisos(codigoRol);
        return listaPermisos;
    }

    //Metodo que busca el nombre del rol en base al codigo del rol
    public int getCodigoRol(String nombre) throws ClassNotFoundException,
            SQLException{
        connection.startConnection();
        query = "select * "
                + "from semac.rol "
                + "where nombre_rol = '" + nombre + "'";
        resultado = connection.execute(query);
        resultado.next();
        int codigoRol = resultado.getInt("codigo_rol");
        connection.closeConnection();
        return codigoRol;
    }

    //Meto que agrega un rol a la base de datos
    public void insertRol(Rol nuevoRol) throws ClassNotFoundException,
            SQLException{
        connection.startConnection();
        query = "insert into semac.rol (nombre_rol, fechacreacion,"
                + " fechamodificacion, codigo_cuenta)"
                + " values ('" + nuevoRol.getNombre() + "','" + nuevoRol.getFechaCreacion().getTime().getDate()
                + "/" + (nuevoRol.getFechaCreacion().getTime().getMonth() + 1) + "/" + (nuevoRol.getFechaCreacion().getTime().getYear() + 1900) + "','"
                + nuevoRol.getFechaModificacion().getTime().getDate() + "/" + (nuevoRol.getFechaModificacion().getTime().getMonth() + 1) + "/"
                + (nuevoRol.getFechaModificacion().getTime().getYear() + 1900) + "'," + nuevoRol.getUltimoAcceso() + ")";
        try{
            connection.execute(query);
        }catch(Exception e){}
        connection.closeConnection();
    }

}
